package com.ljh.myaiagent.agent.model;


/**
 * ReActAgent 抽象类，继承自 BaseAgent
 * 实现了思考-行动的循环模式
 */

public abstract class ReActAgent extends BaseAgent {

    /**
     * 处理当前状态并决定下一步行动
     *
     * @return 如果需要继续行动返回 true，否则返回 false
     */
    public abstract boolean think();

    /**
     * 执行决定的行动
     *
     * @return 行动结果字符串
     */
    public abstract String act();

    /**
     * 执行单步操作
     * @return 当前步骤的结果字符串
     */
    @Override
    public String step(){
        try {
            boolean shouldAct = think();
            if(!shouldAct){
                return "Agent decided not to act.";
            }
            return act();
        } catch (Exception e) {
            // 记录异常
            e.printStackTrace();
            return "Error during step execution: " + e.getMessage();
        }
    }
}
